import { BwCustomComPropDataTypeEnum } from '@bitwit/base-com-render'

/** 获取自定义组件数据类型 */
export function getCustomComPropDataType(type: BwCustomComPropDataTypeEnum) {
  switch (type) {
    case BwCustomComPropDataTypeEnum.array: {
      return Array
    }
    case BwCustomComPropDataTypeEnum.boolean: {
      return Boolean
    }
    case BwCustomComPropDataTypeEnum.number: {
      return Number
    }
    case BwCustomComPropDataTypeEnum.object: {
      return Object
    }
    case BwCustomComPropDataTypeEnum.string: {
      return String
    }
  }
}

/** 获取自定义组件数据类型 */
export function getCustomComPropDefaultValue(
  type?: BwCustomComPropDataTypeEnum,
  value?: string
) {
  if (type) {
    switch (type) {
      case BwCustomComPropDataTypeEnum.array: {
        try {
          // @ts-ignore
          return [undefined].includes(value) ? undefined : JSON.parse(value)
        } catch (err) {
          return undefined
        }
      }
      case BwCustomComPropDataTypeEnum.boolean: {
        // @ts-ignore
        return [true, 'true'].includes(value) ? true : false
      }
      case BwCustomComPropDataTypeEnum.number: {
        return [undefined, null, '', 'null', 'undefined'].includes(value)
          ? undefined
          : Number(value)
      }
      case BwCustomComPropDataTypeEnum.object: {
        try {
          // @ts-ignore
          return [undefined].includes(value) ? undefined : JSON.parse(value)
        } catch (err) {
          return undefined
        }
      }
      case BwCustomComPropDataTypeEnum.string: {
        return value
      }
      default: {
        return undefined
      }
    }
  } else {
    return undefined
  }
}
